/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Negocio;

import Conexion.GestionSQL;
import java.util.Vector;

/**
 *
 * @author jorge.correa
 */
public class Indicador {
    private String strFechaIni = ""; 
    private String strFechaFin = "";
    private String strSQL = "";
    
    public Indicador(String strFechaIni, String strFechaFin){
        this.strFechaIni = strFechaIni;
        this.strFechaFin = strFechaFin;       
    }
    
    public Vector numSolXTipoUsuario(){
            Vector arrDatos = new Vector();
            String strTipoUsuarioI="";
            String strTipoUsuarioE="";
            String[] strTotalInterno = null;
            String[] strTotalExterno = null;
            
            strTipoUsuarioI = "Interno";
            strTipoUsuarioE = "Externo";
            if ( (this.strFechaIni != null) && (this.strFechaFin != null)){
                
                strSQL = "select count(*) from tbl_solicitudes s, tbl_personas p where (s.txtIdPersona = p.txtIdentificacion) and p.txtMiembroUDEA = 'S' and (s.dtFechaRecibo BETWEEN '" + this.strFechaIni + "' and '" + this.strFechaFin + "')";
               strTotalInterno = GestionSQL.getFila(strSQL);
                
                strSQL = "select count(*) from tbl_solicitudes s, tbl_personas p where (s.txtIdPersona = p.txtIdentificacion) and p.txtMiembroUDEA = 'N' and (s.dtFechaRecibo BETWEEN '" + this.strFechaIni + "' and '" + this.strFechaFin + "')";
                strTotalExterno = GestionSQL.getFila(strSQL);
            }else{
                strSQL = "select count(*) from tbl_solicitudes s, tbl_personas p where (s.txtIdPersona = p.txtIdentificacion) and p.txtMiembroUDEA = 'S'";
                strTotalInterno = GestionSQL.getFila(strSQL);
                
                strSQL = "select count(*) from tbl_solicitudes s, tbl_personas p where (s.txtIdPersona = p.txtIdentificacion) and p.txtMiembroUDEA = 'N'";
                strTotalExterno = GestionSQL.getFila(strSQL);
            }
            
            arrDatos.add(strTipoUsuarioE + ">" + strTotalExterno[0]);
            arrDatos.add(strTipoUsuarioI + ">" + strTotalInterno[0]);           
            
            return arrDatos;
    }
    
    public Vector TopServiciosSol(){
         Vector arrDatos = new Vector();
         String[] strTemp = null;
         String[] strTotal = null;         
                  
         strSQL = "select s.txtCodigo, s.txtNombre from tbl_servicios s ORDER BY s.txtNombre";
         Vector arrServicios = GestionSQL.consultaSQL(strSQL,"2");
         
         int[] intTotal = new int[arrServicios.size()] ;
         String[] strNombresS = new String[arrServicios.size()];
         
         if ( (this.strFechaIni != null) && (this.strFechaFin != null)){
                for(int i=0;i<arrServicios.size();i++){
                    strTemp = arrServicios.get(i).toString().split(">");

                    strSQL = "select count(*) from tbl_solicitudes s where s.txtIdServicio = '" + strTemp[0] + "' and (s.dtFechaRecibo BETWEEN '" + this.strFechaIni + "' and '" + this.strFechaFin + "')";
                    strTotal =GestionSQL.getFila(strSQL);
                    intTotal[i] = Integer.parseInt(strTotal[0]);             
                    strNombresS[i] = strTemp[1];
                }
         }else{
             for(int i=0;i<arrServicios.size();i++){
                strTemp = arrServicios.get(i).toString().split(">");

                strSQL = "select count(*) from tbl_solicitudes s where s.txtIdServicio = '" + strTemp[0] + "'";
                strTotal =GestionSQL.getFila(strSQL);
                intTotal[i] = Integer.parseInt(strTotal[0]);             
                strNombresS[i] = strTemp[1];
            }
         }         
         
         return ordenarArrayDESC(intTotal,strNombresS);
    }
    
    private Vector ordenarArrayDESC(int[] intArrayNum, String[] strArrayDep){
            Vector arrDatosOrd = new Vector();
        
            for (int i = 0 ; i < intArrayNum.length - 1 ; i++) {
                int max = i;

                for (int j = i + 1 ; j < intArrayNum.length ; j++) {
                    if (intArrayNum[j] > intArrayNum[max]) {
                        max = j;    //encontramos el mayor número
                    }
                }

                if (i != max) {
                    //permutamos los valores
                    int aux = intArrayNum[i];
                    intArrayNum[i] = intArrayNum[max];
                    intArrayNum[max] = aux;
                    
                    String strAux = strArrayDep[i];
                    strArrayDep[i] = strArrayDep[max];
                    strArrayDep[max] = strAux;
                }
            }
            
            for (int a=0;a< intArrayNum.length; a++){
                    arrDatosOrd.add(strArrayDep[a] + ">" + intArrayNum[a]);
            }
            return arrDatosOrd;
    }
    
    private Vector ordenarArrayASC(int[] intArrayNum, String[] strArrayDep){
            Vector arrDatosOrd = new Vector();
        
            for (int i = 0 ; i < intArrayNum.length - 1 ; i++) {
                int min = i;
 
                //buscamos el menor número
                for (int j = i + 1 ; j < intArrayNum.length ; j++) {
                    if (intArrayNum[j] < intArrayNum[min]) {
                        min = j;    //encontramos el menor número
                    }
                }

                if (i != min) {
                    //permutamos los valores
                    int aux = intArrayNum[i];
                    intArrayNum[i] = intArrayNum[min];
                    intArrayNum[min] = aux;
                    
                    String strAux = strArrayDep[i];
                    strArrayDep[i] = strArrayDep[min];
                    strArrayDep[min] = strAux;
                }
            }
            
            for (int a=0;a< intArrayNum.length; a++){
                    arrDatosOrd.add(strArrayDep[a] + ">" + intArrayNum[a]);
            }
            return arrDatosOrd;
    }
}
